package com.pro.framework.api.structure;

import java.util.Objects;

/**
 * 接受五个参数且不返回结果的操作
 *
 * @param <T> 第一个参数类型
 * @param <U> 第二个参数类型
 * @param <V> 第三个参数类型
 * @param <W> 第四个参数类型
 * @param <X> 第五个参数类型
 */
@FunctionalInterface
public interface QuintConsumer<T, U, V, W, X> {
    /**
     * 对给定参数执行操作
     *
     * @param t 第一个输入参数
     * @param u 第二个输入参数
     * @param v 第三个输入参数
     * @param w 第四个输入参数
     * @param x 第五个输入参数
     */
    void accept(T t, U u, V v, W w, X x);

    /**
     * 返回一个组合的QuintConsumer，按顺序执行此操作和after操作
     *
     * @param after 当前操作后执行的操作
     * @return 组合操作
     * @throws NullPointerException 如果after为null
     */
//    default QuintConsumer<T, U, V, W, X> andThen(QuintConsumer<? super T, ? super U, ? super V, ? super W, ? super X> after) {
//        Objects.requireNonNull(after);
//        return (t, u, v, w, x) -> {
//            accept(t, u, v, w, x);
//            after.accept(t, u, v, w, x);
//        };
//    }
}
